Many speech compression systems employ a subsystem to model the periodicity of a speech signal. Two such periodicity models in wide use in speech compression (or coding) systems are the pitch prediction filter (PPF) and the adaptive codebook (ACB).
The ACB is fundamentally a memory which stores samples of past speech signals, or derivatives thereof such as speech residual or excitation signals (hereafter speech signals). Periodicity is introduced (or modeled) by copying samples from the past (as stored in the memory) speech signal into the present to "predict" what the present speech signal will look like.
The PPF is a simple IIR filter which is typically of the form EQU y(n)=x(n)+g.sub.p y(n-M) (1)
where n is a sample index, y is the output, x is the input, M is a delay value of the filter, and g.sub.p is a scale factor (or gain). Because the current outpbt of the PPF is dependent on a past output, is introduced the PPF.
Although either the ACB or PPF can be used in speech coding, these periodicity models do not operate identically under all circumstances. For example, while a PPF and an ACB will yield the same results when the pitch-period of voiced speech is greater than or equal to the subframe (or codebook vector) size, this is not the case if the pitch-period is less than the subframe size. This difference is illustrated by FIGS. 1 and 2, where it is assumed that the pitch-period (or delay) is 2.5 ms, but the subframe size is 5 ms.
FIG. 1 presents a conventional combination of a fixed codebook (FCB) and an ACB as used in a typical CELP speech compression system (this combination is used in both the encoder and decoder of the CELP system). As shown in the Figure, FCB 1 receives an index value, I, which causes the FCB to output a speech signal (excitation) vector of a predetermined duration. This duration is referred to as a subframe (here, 5 ms.). Illustratively, this speech excitation signal will consist of one or more main pulses located in the subframe. For purposes of clarity of presentation, the output vector will be assumed to have a single large pulse of unit magnitude. The output vector is scaled by a gain, g.sub.c, applied by amplifier 5.
In parallel with the operation of the FCB 1 and gain 5, ACB 10 generates a speech signal based on previously synthesized speech. In a conventional fashion, the ACB 10 searches its memory of past speech for samples of speech which most closely match the original speech being coded. Such samples are in the neighborhood of one pitch-period (M) in the past from the present sample it is attempting to synthesize. Such past speech samples may not exist if the pitch is fractional; they may have to be synthesized by the ACB from surrounding speech sample values by linear interpolation, as is conventional. The ACB uses a past sample identified (or synthesized) in this way as the current sample. For clarity of explanation, the balance of this discussion will assume that the pitch-period is an integral multiple of the sample period and that past samples are identified by M for copying into the present subframe. The ACB outputs individual samples in this manner for the entire subframe (5 ms.). All samples produced by the ACB are scaled by a gain, g.sub.p, applied by amplifier 15.
For current samples in the second half of the subframe, the "past" samples used as the "current" samples are those samples in the first half of the subframe. This is because the subframe is 5 ms in duration, but the pitch-period, M,--the time period used to identify past samples to use as current samples--is 2.5 ms. Therefore, if the current sample to be synthesized is at the 4 ms point in the subframe, the past sample of speech is at the 4 ms -2.5 ms or 1.5 ms point in the same subframe.
The output signals of the FCB and ACB amplifiers 5, 15 are summed at summing circuit 20 to yield an excitation signal for a conventional linear predictive (LPC) synthesis filter (not shown). A stylized representation of one subframe of this excitation signal produced by circuit 20 is also shown in FIG. 1. Assuming pulses of unit magnitudes before scaling, the system of codebooks yields several pulses in the 5 ms subframe. A first pulse of height g.sub.p, a second pulse of height g.sub.c, and a third pulse of height g.sub.p. The third pulse is simply a copy of the first pulse created by the ACB. Note that there is no copy of the second pulse in the second half of the subframe since the ACB memory does not include the second pulse (and the fixed codebook has but one pulse per subframe).
FIG. 2 presents a periodicity model comprising a FCB 25 in series with a PPF 50. The PPF 50 comprises a summing circuit 45, a delay memory 35, and an amplifier 40. As with the system discussed above, an index, I, applied to the FCB 25 causes the FCB to output an excitation vector corresponding to the index. This vector has one major pulse. The vector is scaled by amplifier 30 which applies gain g.sub.c. The scaled vector is then applied to the PPF 50. PPF 50 operates according to equation (1) above. A stylized representation of one subframe of PPF 50 output signal is also presented in FIG. 2. The first pulse of the PPF output subframe is the result of a delay, M, applied to a major pulse (assumed to have unit amplitude) from the previous subframe (not shown). The next pulse in the subframe is a pulse contained in the FCB output vector scaled by amplifier 30. Then, due to the delay 35 of 2.5 ms, these two pulses are repeated 2.5 ms later, respectively, scaled by amplifier 40.
There are major differences between the output signals of the ACB and PPF implementations of the periodicity model. They manifest themselves in the later half of the synthesized subframes depicted in FIGS. 1 and 2. First, the amplitudes of the third pulses are different--g.sub.p as compared with g.sub.p.sup.2. Second, there is no fourth pulse in output of the ACB model. Regarding this missing pulse, when the pitch-period is less than the frame size, the combination of an ACB and a FCB will not introduce a second fixed codebook contribution in the subframe. This is unlike the operation of a pitch prediction filter in series with a fixed codebook.